package utile

import (
	"log"
)

type UserInfo struct {
	UserID   int    `gorm:"column:user_id"`
	Username string `gorm:"column:username"`
	Password string `gorm:"column:password"`
	Avatar   string `gorm:"column:avatar"`
}

/**
 * @return 获取用户信息
 */
func GetUserInfo() []UserInfo {
	expressageDb, err := GetDB()
	if err != nil {
		log.Fatal(err) // Log the error if connection fails
	}

	var userInfo []UserInfo
	if err := expressageDb.Find(&userInfo).Error; err != nil {
		log.Fatal(err) // Log error if query fails
	}

	return userInfo
}

/**
 * @return 根据用户名称查询用户信息
 */
func FindUser(username string) (*UserInfo, error) {
	expressageDb, err := GetDB()
	if err != nil {
		return nil, err
	}

	var userInfo UserInfo
	if err := expressageDb.Where("username = ?", username).First(&userInfo).Error; err != nil {
		return nil, err
	}

	return &userInfo, err
}

func CreateUser(user *UserInfo) error {
	db, err := GetDB()
	if err != nil {
		return err
	}
	if err := db.Create(user).Error; err != nil {
		return err
	}
	return nil
}

func FindUserByID(userID string) (*UserInfo, error) {
	db, err := GetDB()
	if err != nil {
		return nil, err
	}

	var userInfo UserInfo
	if err := db.Where("user_id = ?", userID).First(&userInfo).Error; err != nil {
		return nil, err
	}

	return &userInfo, nil
}
